<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   
      <title>3.9. Mensajes y Errores</title>
      <meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2">
      <link rel="home" href="indice.html" title="Manual Usuario gvHidra">
      <link rel="up" href="ch03.html" title="Cap&iacute;tulo 3. Elementos b&aacute;sicos">
      <link rel="prev" href="ch03s08.html" title="3.8. Listas de datos sencillas">
      <link rel="next" href="ch03s10.html" title="3.10. Uso de datos por defecto">
   </head>
   <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
      <div class="navheader">
         <table width="100%" summary="Navigation header">
            <tr>
               <th colspan="3" align="center">3.9. Mensajes y Errores</th>
            </tr>
            <tr>
               <td width="20%" align="left"><a accesskey="p" href="ch03s08.html">Anterior</a>&nbsp;
               </td>
               <th width="60%" align="center">Cap&iacute;tulo 3. Elementos b&aacute;sicos</th>
               <td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s10.html">Siguiente</a></td>
            </tr>
         </table>
         <hr>
      </div>
      <div class="section" title="3.9. Mensajes y Errores">
         <div class="titlepage">
            <div>
               <div>
                  <h2 class="title" style="clear: both"><a name="d4e3182"></a>3.9. Mensajes y Errores
                  </h2>
               </div>
            </div>
         </div>
             
         
             
         <p><a name="C3Mensajes"></a>En cualquier aplicaci&oacute;n es necesario mostrar avisos,
            errores... En gvHidra todo este tipo de mensajes se ha clasificado en
            cuatro grupos, m&aacute;s que nada por su aspecto visual, ya que todas ser&aacute;n
                invocadas de la misma forma, asociando un color a un tipo de
                mensaje:
         </p>
         
             
         <div class="orderedlist">
            <ol class="orderedlist" type="1">
               <li class="listitem">
                          
                  <p><span class="bold"><strong>Alertas</strong></span>.
                  </p>
                  
                          
                  <p>Este tipo de mensajes ser&aacute; &uacute;til para alertar al usuario de un
                             estado, aunque pueda continuar trabajando pero con conocimiento de un
                             estado. En el ejemplo se alerta de que la aplicaci&oacute;n est&aacute; en
                             desarrollo por lo tanto puede ser inestable.
                  </p>
                  
                          
                  <div class="mediaobject" align="center"><img src="images/alerta.png" align="middle"></div>
                        
               </li>
               <li class="listitem">
                          
                  <p><span class="bold"><strong>Avisos</strong></span>.
                  </p>
                  
                          
                  <p>Este tipo de mensaje nos avisa de cierta situaci&oacute;n, nada
                             problem&aacute;tica, pero que tengamos en cuenta.
                  </p>
                  
                          
                  <div class="mediaobject" align="center"><img src="images/aviso.png" align="middle"></div>
                        
               </li>
               <li class="listitem">
                          
                  <p><span class="bold"><strong>Errores</strong></span>.
                  </p>
                  
                          
                  <p>Claramente los errores muestran problemas ocurridos al efectuar
                             una acci&oacute;n. En el ejemplo se avisa de que hay que rellenar ciertos
                             campos de forma obligatoria y por eso falla la b&uacute;squeda.
                  </p>
                  
                          
                  <div class="mediaobject" align="center"><img src="images/error.png" align="middle"></div>
                        
               </li>
               <li class="listitem">
                          
                  <p><span class="bold"><strong>Sugerencias</strong></span>.
                  </p>
                  
                          
                  <p>Son mensajes de tipo consejo al usuario que no le impiden
                             continuar con el trabajo. En el ejemplo se aconseja al usuario
                             cerciorarse de que todo est&eacute; rellenado antes de efectuar la
                             acci&oacute;n.
                  </p>
                  
                          
                  <div class="mediaobject" align="center"><img src="images/sugerencia.png" align="middle"></div>
                        
               </li>
            </ol>
         </div>
         
             
         <p></p>
         
             
         <p>Hay <span class="emphasis"><em>mensajes que son propios del framework</em></span>, son
                mensajes generales a cualquier aplicaci&oacute;n, se encuentran ubicados en la
                clase <span class="bold"><strong>IgepMensaje.php</strong></span>. Por otro lado
                estar&aacute;n los <span class="emphasis"><em>mensajes particulares de cada aplicaci&oacute;n</em></span>,
                estos se definir&aacute;n en el fichero <span class="bold"><strong>mensajes.php</strong></span>, este fichero se encuentra en el
                directorio ra&iacute;z de la aplicaci&oacute;n.
         </p>
         
             
         <p>Vamos a explicar como a&ntilde;adir mensajes en el fichero
                <span class="emphasis"><em>mensajes.php</em></span>. En este fichero existe una variable
                global que es el array donde se ir&aacute;n almacenando los mensajes (<span class="bold"><strong>$g_mensajesParticulares</strong></span>).
         </p>
         
             
         <div class="informalexample">
                  
            
                  <pre class="programlisting">&lt;?php

global $g_mensajesParticulares;
$g_mensajesParticulares = array(
     '<span class="bold"><strong>APL-1</strong></span>'=&gt;array('descCorta'=&gt;'No se puede realizar el borrado','descLarga'=&gt;'No se puede borrar un tipo que tiene subtipos asociados. Si quiere eliminar este tipo deber&aacute; borrar todos sus subtipos.','tipo'=&gt;'<span class="bold"><strong>ERROR</strong></span>'),
     '<span class="bold"><strong>APL-2</strong></span>'=&gt;array('descCorta'=&gt;'Se ha listado la factura.','descLarga'=&gt;'Se ha listado la factura <span class="bold"><strong>%0%-%1%</strong></span>.','tipo'=&gt;'<span class="bold"><strong>AVISO</strong></span>'),
...
);

?&gt;</pre>
                </div>
         
             
         <p>Un mensaje se crea a&ntilde;adiendo un elemento al array asociativo. El
                elemento tiene una clave &uacute;nica (ej. 'APL-1'), ya que esta clave es la que
                se utilizar&aacute; como identificador para invocarlo, y como valor es otro array
                que contiene tres elementos:
         </p>
         
             
         <div class="orderedlist">
            <ol class="orderedlist" type="1">
               <li class="listitem">
                          
                  <p><span class="bold"><strong>descCorta</strong></span>: Descripci&oacute;n corta
                             del mensaje, esta descripci&oacute;n aparecer&aacute; en la parte superior del
                             mensaje, en la zona coloreada.
                  </p>
                        
               </li>
               <li class="listitem">
                          
                  <p><span class="bold"><strong>descLarga</strong></span>: Descripci&oacute;n completa
                             del mensaje, esta descripci&oacute;n aparecer&aacute; en la parte inferior del
                             mensaje, zona blanca. Aqu&iacute; podemos jugar con el texto del mensaje y
                             pasarle par&aacute;metros desde su invocaci&oacute;n, nos dar&aacute; un mensaje m&aacute;s
                             personalizado. Los valores vendr&aacute;n en un array, y aqu&iacute; se har&aacute;
                             referencia a ellos de la siguiente forma %0% para el primer valor del
                             array, %1% para el segundo, y as&iacute; sucesivamente.
                  </p>
                        
               </li>
               <li class="listitem">
                          
                  <p><span class="bold"><strong>tipo</strong></span>: palabra clave que
                             definir&aacute; el tipo del mensaje. Estas palabras pueden ser: AVISO, ERROR,
                             SUGERENCIA y ALERTA, que se corresponden con los cuatro grupos vistos
                             anteriormente.
                  </p>
                        
               </li>
            </ol>
         </div>
         
             
         <p>La invocaci&oacute;n de los mensajes se puede efectuar desde dos puntos
                distintos, desde c&oacute;digo o mediante par&aacute;metro del plugin.
         </p>
         
             
         <div class="section" title="3.9.1. Invocaci&oacute;n desde c&oacute;digo">
            <div class="titlepage">
               <div>
                  <div>
                     <h3 class="title"><a name="d4e3242"></a>3.9.1. Invocaci&oacute;n desde c&oacute;digo
                     </h3>
                  </div>
               </div>
            </div>
                  
            
                  
            <p>Es el uso m&aacute;s habitual. Para invocar un mensaje hay que hacer uso
                     del m&eacute;todo <span class="bold"><strong>showMensaje()</strong></span> y pas&aacute;ndole
                     como par&aacute;metro el identificador del mensaje que queremos mostrar, que
                     debe coincidir con el definido en
                     <span class="emphasis"><em>mensajes.php</em></span>:
            </p>
            
                  
            <div class="informalexample">
                       
               
                       <pre class="programlisting">if ( &lt;condicion&gt; ) {
   $this-&gt;<span class="bold"><strong>showMensaje</strong></span>('APL-3');
   return 0;
}</pre>
                     </div>
            
                  
            <p>Tambi&eacute;n podemos pasar argumentos a los mensajes, atributos para
                     personalizar mejor el mensaje que queremos dar. En este caso, en el
                     texto del mensaje deberemos colocar las variables a sustituir, de la
                     forma '%0%', '%1%', ... tal y como hemos explicado anteriormente. Estas
                     variables se pasan en el m&eacute;todo <span class="bold"><strong>showMensaje()</strong></span> mediante un array con tantos
                     valores como variables hayamos definido. A continuaci&oacute;n se muestra un
                     ejemplo:
            </p>
            
                  
            <div class="informalexample">
                       
               
                       <pre class="programlisting">// APL-4: El valor ha de ser mayor de %0% y menor de %1%
if ( &lt;condicion&gt; ) {
    $this-&gt;<span class="bold"><strong>showMensaje</strong></span>('APL-4', <span class="bold"><strong>array('5','10')</strong></span>);
    return 0;
}</pre>
                     </div>
                
         </div>
         
             
         <div class="section" title="3.9.2. Invocaci&oacute;n como confirmaci&oacute;n">
            <div class="titlepage">
               <div>
                  <div>
                     <h3 class="title"><a name="d4e3256"></a>3.9.2. Invocaci&oacute;n como confirmaci&oacute;n
                     </h3>
                  </div>
               </div>
            </div>
                  
            
                  
            <p>En este caso nos referimos a ventanas que solicitan del usuario
                     una confirmaci&oacute;n para continuar con la acci&oacute;n o cancelarla.
            </p>
            
                  
            <p>Para crear este tipo de mensajes de confirmaci&oacute;n hay que a&ntilde;adir el
                     par&aacute;metro "<span class="emphasis"><em>confirm</em></span>" al plugin <span class="bold"><strong>CWBoton </strong></span>(ver Ap&eacute;ndice X Documentaci&oacute;n plugins)
                     indicando el identificador del mensaje que queremos mostrar (ej.
                     "APL-2").
            </p>
            
                  
            <p>De este modo, nos aparecer&aacute; un mensaje con dos alternativas Si/No.
                     Al pulsar Si se ejecutar&aacute; la acci&oacute;n, al pulsar No, la acci&oacute;n quedar&aacute;
                     cancelada.
            </p>
            
                  
            <div class="informalexample">
                       
               
                       <pre class="programlisting">{CWBoton imagen="41" texto="Guardar" class="boton" accion="guardar" confirm="APL-32"}
</pre>
                     </div>
            
                  
            <div class="mediaobject" align="center"><img src="images/mensaje_cambios.png" align="middle"></div>
                
         </div>
           
      </div>
      <div class="navfooter">
         <hr>
         <table width="100%" summary="Navigation footer">
            <tr>
               <td width="40%" align="left"><a accesskey="p" href="ch03s08.html">Anterior</a>&nbsp;
               </td>
               <td width="20%" align="center"><a accesskey="u" href="ch03.html">Subir</a></td>
               <td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03s10.html">Siguiente</a></td>
            </tr>
            <tr>
               <td width="40%" align="left" valign="top">3.8. Listas de datos sencillas&nbsp;</td>
               <td width="20%" align="center"><a accesskey="h" href="indice.html">Inicio</a></td>
               <td width="40%" align="right" valign="top">&nbsp;3.10. Uso de datos por defecto</td>
            </tr>
         </table>
      </div>
   </body>
</html>